/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package test.net.sourceforge.pmd.symboltable;
import junit.framework.TestCase;
import net.sourceforge.pmd.ast.ASTVariableDeclaratorId;
import net.sourceforge.pmd.ast.SimpleNode;
import net.sourceforge.pmd.symboltable.ClassScope;
import net.sourceforge.pmd.symboltable.NameOccurrence;
import net.sourceforge.pmd.symboltable.VariableNameDeclaration;
public class ClassScopeTest extends TestCase {
public void testContains() {
ClassScope s = new ClassScope("Foo");
ASTVariableDeclaratorId node = new ASTVariableDeclaratorId(1);
node.setImage("bar");
s.addDeclaration(new VariableNameDeclaration(node));
assertTrue(s.getVariableDeclarations(false).keySet().iterator().hasNext());
}
public void testCantContainsSuperToString() {
ClassScope s = new ClassScope("Foo");
SimpleNode node = new SimpleNode(1);
node.setImage("super.toString");
assertTrue(!s.contains(new NameOccurrence(node, node.getImage())));
}
public void testContainsStaticVariablePrefixedWithClassName() {
ClassScope s = new ClassScope("Foo");
ASTVariableDeclaratorId node = new ASTVariableDeclaratorId(1);
node.setImage("X");
s.addDeclaration(new VariableNameDeclaration(node));
SimpleNode node2 = new SimpleNode(2);
node2.setImage("Foo.X");
assertTrue(s.contains(new NameOccurrence(node2, node2.getImage())));
}
public void testClassName() {
ClassScope s = new ClassScope("Foo");
assertEquals("Foo", s.getClassName());
}
// FIXME - these will break when this goes from Anonymous$1 to Foo$1
public void testAnonymousInnerClassName() {
ClassScope s = new ClassScope();
assertEquals("Anonymous$1", s.getClassName());
s = new ClassScope();
assertEquals("Anonymous$2", s.getClassName());
}
}